1. Field of the Invention
The invention is related to debuggers, and more specifically, to enabling a debugger to be used to step through interpreted code.
2. Background and Relevant Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments.
Computer system tasks are typically implemented in computer code of software programs that run on a computer system to perform the various designed tasks. Depending on the software program, computer code for performing computerized tasks can vary from relatively simply to relatively complex. Further, the execution of computer code can be facilitated by an interpreter or a compiler.
When using a compiler, source code is input to a compiler. The compiler compiles the source code into an executable file that can be run directly against the operating system of a computer. When using an interpreter, source code is input directly to an interpreter that executes the source code (without generating an executable file).
With respect to all types of code, compiled and interpreted alike, it is desirable that the code be as free of errors as possible to assure a high quality product for the end user. However, it can take some amount of work by a software developer to get even relatively simple software programs to work as the software developer depends. During the development cycle computer code can run but not produce intended results, can run with errors (e.g., crashes, etc), or may simply not run at all. Thus, within the development cycle a software developer can take diagnostic measures, such as, for example, debugging and testing computer code, to identify and correct design and execution problems with a software program.
Typically a developer runs a program inside a debugger that essentially monitors execution of the program. A debugger permits a developer to take various diagnostic measures to identify and correct coding errors, such as, for example, setting breakpoints, stepping though code, inspecting values, etc. Many industrial-quality debuggers, such as Visual Studio, are targeted at compiled code.
Unfortunately, typical debuggers are not well suited to debugging interpreted code. Since an interpreter is also a program, code from an interpreter is intermingled with source code during interpretation of the source code. A debugger typically has no way to distinguish between source code and interpreter code. This make is difficult, if not impossible, for a developer to use a debugger to debug interpreted code, since they are unable to distinguish their source code form interpreter's code. For example, stepping between lines of code, a developer could step from interpreter code to source code or vice versa and not know.